// pages/game/game.js
//倒计时时间
var TIME = 60;
var app = getApp();//取得全局App({..})实例
var opacitya = app.globalData.opacitya;//取得全局变量需要的值

Page({

  // 非常重要
  // 只有写在data里面的属性，才能在wxml中使用
  // 才可以使用数据双向绑定的功能
  data: {
    //表示行数
    row: 2,
    //色块详细信息的数值
    items: [],
    //倒计时
    time: TIME,
    score:0,   //分数
    step:0    //步数

  },

  // 初始化页面
  // 可以初始化属性 不在wxml中使用的属性
  onLoad: function (e) {
    this.width = 750;
    this.getDeviceWidth();

    
    //初始化titles数组
    this.titles=["a","b","c","d"];
    //获得下标
    this.titlesIndex=0;

    this.opacitya=e.opacitya;
    this.gameCore();
   
  },

  // 获取设备宽度
  getDeviceWidth: function () {
    //获取设备信息
    wx.getSystemInfo({
      success: function (res) {
        this.width = res.windowWidth;
      }.bind(this)
    })
  },

  //游戏的核心部分
  gameCore: function () {
    //计算间距
    var tempColorViewWitdt = this.width / this.data.row;//平均分 临时色块宽度

    //计算后的 色块间距
    var space = tempColorViewWitdt * 0.1;

    //色块宽度 (总宽度-总间距)/色块数
    var allSpace = space * (this.data.row + 1);//色块总间距
    var colorViewWidth = (this.width - allSpace) / this.data.row;

    //获取随机颜色
    var color = this.randColor();

    //设置特殊颜色
    var allNums = this.data.row * this.data.row;//一共多少色块
    var specialIndex = parseInt(Math.random() * allNums);

    var tempList = [];
    //循环创建色块 放入数组
    for (var i = 0; i < allNums; i++) {
      var info = {
        width: colorViewWidth,
        color: color,
        space: space,
        //不同透明度
        opacity: i == specialIndex ? this.opacitya : 1
      }
      tempList.push(info);
    }
    this.setData({
      items: tempList
    });

  },

  //随机颜色
  randColor: function () {
    //parseInt(Math.random()*256) 0-255整数
    var r = parseInt(Math.random() * 256);
    var g = parseInt(Math.random() * 256);
    var b = parseInt(Math.random() * 256);

    return "rgb(" + r + "," + g + "," + b + ")";
  },

  //判定是否选中
  chooseAction: function (e) {
    //
    var opacity = e.currentTarget.dataset.opacity;
    opacity == 1 ? this.fail() : this.success();
    this.gameCore();
  },

  //成功添加行数
  success: function () {
    //难度扩展，添加专门改变this.data.row的函数
    this.setData({
      row: ++this.data.row,
      time: TIME,
    });
    //段位
    
  },

//段位
  getTitle:function(){
    if (this.data.row - 2 <= 5) {
      this.titlesIndex = 0;
    } else if (this.data.row - 2 > 5 && this.data.row - 2 <= 10) {
      ++this.titlesIndex;
    } else if (this.data.row - 2 > 10 && this.data.row - 2 <= 15) {
      ++this.titlesIndex;
    } else if (this.data.row - 2 > 15) {
      this.titlesIndex = 3;
    }
   
    return this.titles[this.titlesIndex];
  },

  //失败提示
  fail: function () {
    clearInterval(this.timer);
    wx.showModal({
      title: '提示',
      content: ''+this.getTitle(),//暂时不写
      showCancel: true,
      cancelText: '结束',
      cancelColor: 'red',
      confirmText: '重新开始',
      confirmColor: 'orange',
      success: function (res) {
        console.log(res);
        //点击cancel 返回上一页
        //点击confirm 重新开始游戏
        res.cancel ? this.back() : this.reStartGame();
      }.bind(this)
    })
    this.titleIndex = 0;
  },

  //结束返回上一页
  back: function () {
    wx.navigateBack({
      //tod: 分数上传服务器

    })

  },

  //重新开始游戏
  reStartGame: function () {
    this.timer = setInterval(this.updateTime, 1000);
    this.setData({
      row: 2,
      time: TIME
    })
    

    this.gameCore();
  },

  //更新时间函数
  updateTime: function () {
    this.setData({
      time: --this.data.time
    })
    if (this.data.time <= 0) {
      this.fail();
    }
  },

  //页面显示时候调用
  onShow: function () {
    this.timer = setInterval(this.updateTime, 1000);
    this.playMusic();
  },

  //页面关闭时候调用
  onUnload: function () {
    clearInterval(this.timer);
    this.stopMusic();
  },

  //播放音乐
  playMusic:function(){
    wx.playBackgroundAudio({
      dataUrl: 'http://bmob-cdn-19178.b0.upaiyun.com/2018/05/16/0f3ded71400ef52780fc12b0e377975d.mp3',
      
    })
  },

  //暂停音乐
  stopMusic:function(){
    wx.stopBackgroundAudio();
  },
})